Turbo (i.e., iterative) parallel concatenated convolutional codes (PCCC's), commonly referred to as “turbo codes,” find widespread application, for example, in modern baseband (e.g., mobile broadband) systems including, but not limited to, Long Term Evolution (LTE) and Wideband Code Division Multiple Access (WCDMA) devices. Turbo codes are essentially PCCC's having an encoder formed by two or more constituent systematic recursive convolutional encoders joined by an interleaver. A received data stream is usually decoded using maximum likelihood decoding.
Typically, turbo codes are implemented in a straightforward manner, meaning that an encoded data stream is processed on a bit-by-bit basis. However, since the input block length is normally very large, maximum likelihood encoding would be significantly complex and thus impractical. A bit-by-bit processing approach, whereby one bit of the input data stream is processed per iteration (e.g., one bit/iteration), leads to poor performance and is therefore undesirable. Another known turbo code implementation approach is to utilize look-up-tables, which slightly improves the bit/cycle performance. This approach, however, requires a significantly large memory allocation for implementing the look-up tables and is thus not practical, particularly for standard digital signal processor (DSP) machines and/or other processing systems in which memory is a commodity.